home *** CD-ROM | disk | FTP | other *** search
/ Amiga Collections: Taifun / Taifun 134 (1990-05-15)(Ossowski, Stefan)(DE)(PD)[v Disaster Master 2].zip / Taifun 134 (1990-05-15)(Ossowski, Stefan)(DE)(PD)[v Disaster Master 2].adf / AvailMem / AvailMem.c < prev    next >
C/C++ Source or Header  |  1990-05-01  |  4KB  |  97 lines

  1. /*------------------------- AvailMem V1.03 ----------------------------*/
  2. /*Written by and copyright ©1988, 1989 David Schreiber.  All rights    */
  3. /*reserved.  This program may not be sold, but reasonable charges for  */
  4. /*media, duplication, shipping/handling, etc. are permitted.           */
  5. /*---------------------------------------------------------------------*/
  6. /*Keeps a running count of the amount of FAST, CHIP, and total memory  */
  7. /*free.  Updates every .5 seconds.  With a stack size of 4K, it takes  */
  8. /*up about 12K of RAM.  Compiled under Lattice C V5.00                 */
  9. /*----------------------------- Enjoy ---------------------------------*/
  10.  
  11. /*Standard #include files*/
  12. #include <exec/types.h>
  13. #include <exec/exec.h>
  14. #include <intuition/intuition.h>
  15.  
  16. /*PowerWindows V2.0 window definition*/
  17. struct NewWindow NewWindowStructure1 = {
  18.    383,17,   /* window XY origin relative to TopLeft of screen */
  19.    210,50,   /* window width and height */
  20.    0,1,   /* detail and block pens */
  21.    CLOSEWINDOW,   /* IDCMP flags */
  22.    WINDOWDRAG+WINDOWDEPTH+WINDOWCLOSE,   /* other window flags */
  23.    NULL,   /* first gadget in gadget list */
  24.    NULL,   /* custom CHECKMARK imagery */
  25.    "AvailMem V1.03",   /* window title */
  26.    NULL,   /* custom screen pointer */
  27.    NULL,   /* custom bitmap */
  28.    5,5,   /* minimum width and height */
  29.    640,200,   /* maximum width and height */
  30.    WBENCHSCREEN   /* destination screen type */
  31. };
  32.  
  33. struct IntuitionBase *IntuitionBase;   /*Library base pointers*/
  34. struct GfxBase *GfxBase;
  35.  
  36. #define Rp Wdw->RPort
  37.  
  38.          /*Using _main() keeps AmigaDOS from opening an extra */
  39. _main()  /*console window when AvailMem is run from Workbench.*/
  40. {
  41.    if((IntuitionBase=(struct IntuitionBase *)   /*Open Intuition*/
  42.          OpenLibrary("intuition.library",0))==NULL)
  43.       exit(10);
  44.                               /*Open Graphics*/
  45.    if((GfxBase=(struct GfxBase *)OpenLibrary("graphics.library",0))==NULL)
  46.       exit(20);
  47.  
  48.    MainLoop();
  49.  
  50.    CloseLibrary(GfxBase);     /*Close the libraries*/
  51.    CloseLibrary(IntuitionBase);
  52. }
  53.  
  54. MainLoop()   /*The main loop*/
  55. {
  56.    unsigned int Mem[3]; /*Holds levels of free memory (CHIP,FAST, & total)*/
  57.    char MemString[3][20];  /*Holds string conversions of above*/
  58.    unsigned char c;     /*Counter variable*/
  59.    struct Window *Wdw;  /*Window pointer*/
  60.  
  61.                               /*Open the window*/
  62.    if((Wdw=(struct Window *)OpenWindow(&NewWindowStructure1))==NULL)
  63.       exit(30);
  64.  
  65.    SetAPen(Rp,1);       /*Write initial text into window*/
  66.    Move(Rp,15,18);
  67.    Text(Rp,"Available memory:",17);
  68.    Move(Rp,15,27);
  69.    Text(Rp,"Fast:",5);
  70.    Move(Rp,15,36);
  71.    Text(Rp,"Chip:",5);
  72.    Move(Rp,15,45);
  73.    Text(Rp,"Total:",6);
  74.  
  75.    /*while the close gadget wasn't pressed...*/
  76.    while( ( GetMsg(Wdw->UserPort) ) == NULL)
  77.       {
  78.       /*Mem[0] == FAST RAM free*/
  79.       /*Mem[1] == CHIP RAM free*/
  80.       /*Mem[2] == Total RAM free*/
  81.       Mem[2]=(Mem[1]=AvailMem(MEMF_CHIP))+(Mem[0]=AvailMem(MEMF_FAST));
  82.  
  83.                /*Clear out strings*/
  84.       MemString[0][0]=MemString[1][0]=MemString[2][0]=NULL;
  85.       for(c=0;c<=2;c++)
  86.          {
  87.          stcu_d(MemString[c],Mem[c],10); /*Convert numbers into strings*/
  88.          strcat(MemString[c]," bytes "); /*Tack " bytes " onto string's end*/
  89.          Move(Rp,86,27+(9*c));   /*Position the cursor*/
  90.          Text(Rp,MemString[c],strlen(MemString[c])); /*and print the text*/
  91.          }
  92.       Delay(25);    /*Wait for .5 seconds, then do the whole thing again*/
  93.       }
  94.    CloseWindow(Wdw);    /*Close the window*/
  95. }
  96.  
  97.